#ifndef _API_FMRX_H
#define _API_FMRX_H

#define FM_FREQ_MIN                         8750
#define FM_FREQ_MAX                         10800

//内置收音判台阈值
typedef struct {
    u16 r_val;
    u16 z_val;
    u16 fz_val;
    u16 d_val;
} fmrx_thd_t;


//这里的cs_filter和FM发射机上的modulation(调制深度)有关。
//指标测试时，调制深度越深，这里的cs_filter带宽需要设置宽，才能保证FM输出不失真
//但cs_filter带宽越大，放进来的底噪就越多。实际使用时,cs_filter配置成25K够了
#define CS_FILTER_125K                      0
#define CS_FILTER_75K                       1    //实测调制深度可达100K不失真
#define CS_FILTER_50K                       2    //实测调制深度可达76K不失真
#define CS_FILTER_25K                       3    //实测调制深度可达54K不失真 (库中默认是这个)


extern fmrx_thd_t fmrx_thd;

void fmrx_dac_sync(void);
void fmrx_power_on(u32 val);
void fmrx_power_off(void);
void fmrx_analog_init(void);
void fmrx_digital_stop(void);
void fmrx_digital_start(void);
void fmrx_set_freq(u16 freq);
u8 fmrx_check_freq(u16 freq);
void fmrx_logger_out(void);

void fmrx_set_rf_cap(u8 val);
void fmrx_set_rf_res(u32 res);
void fmrx_set_rf_fbres(u8 val);

s8 fmrx_rssi_pow_get(void);     //信号强度 //等同以前的 fmrx_rssi_dbu_get
void fmrx_set_audio_channel(u8 mono_flag);  //设置立体声或单声道解调输出  1:mono, 0:stereo
u8 fmrx_get_audio_channel(void);            //获取当前输出状态  1:mono 0:stereo
bool fmrx_cur_freq_is_stereo(void);         //检测当前收听台是不是立体声, 用于车机的ST标志显示(判断需要100ms)

void fmrx_rec_enable(void);
void fmrx_rec_start(void);
void fmrx_rec_stop(void);
void fmrx_sel_cs_filter(u8 num);

#endif // _API_FMRX_H
